package org.farm.product.infra.basic.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;

/**
 * @author Frank Zou
 * @version v0.0.1
 * @date 2025/4/22
 * @description 库存锁定信息。
 */

@Data
@TableName(value = "product_sku_stock_lock")
public class ProductSkuStockLock implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * Lock stock id.
     */
    @TableId(value = "id", type = IdType.INPUT)
    private Long id;

    /**
     * 商品 SPU ID。
     */
    @TableField(value = "spu_id")
    private Long spuId;

    /**
     * 商品 SKU ID。
     */
    @TableField(value = "sku_id")
    private Long skuId;

    /**
     * 订单 ID。
     */
    @TableField(value = "order_id")
    private Long orderId;

    /**
     * 库存锁定状态（-1已解锁；0待确定；1 已锁定）。
     */
    @TableField(value = "`status`")
    private Integer status;

    /**
     * 锁定库存数量。
     */
    @TableField(value = "`count`")
    private Integer count;

    /**
     * 版本号。
     */
    @TableField(value = "lock_version")
    private Integer lockVersion;

    /**
     * 创建时间。
     */
    @TableField(value = "created_at")
    private Date createdAt;

    /**
     * 创建人。
     */
    @TableField(value = "created_by")
    private Long createdBy;

    /**
     * 修改时间。
     */
    @TableField(value = "updated_at")
    private Date updatedAt;

    /**
     * 修改人。
     */
    @TableField(value = "updated_by")
    private Long updatedBy;

    /**
     * 是否删除。
     */
    @TableField(value = "deleted")
    private Integer deleted;
}